排列数
题目 排列数
思路分析
感觉太暴力了 但想不到优化的点
不知道能过几个
emm只能过1个 你还是我熟悉的蓝桥杯吗
正解是dp emm 没看出来 虽然模拟案例时感觉有规律 但没看清楚
无所谓 两分也是分
代码实现
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
vector<int> a;
int n,k;
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>k;
for(int i=1;i<=n;i++){
a.push_back(i);
}
int cnt=0;
do{
int points=0;
for(int i=1;i<n-1;i++){
if((a[i]>a[i-1] && a[i]>a[i+1]) || (a[i]<a[i-1] && a[i]<a[i+1]))
points++;
}
if(points==k-1)
cnt++;
}while(next_permutation(a.begin(),a.end()));
cout<<cnt;
return 0;
}
💬 评论